1. Field of the Invention
The present invention relates to the transliteration of user input into a computing device. More specifically, the invention provides methods for inputting language into a computing device based on a phonetic-based scheme.
2. Description of Related Art
One of the early challenges that faced operating systems developers was how to make operating systems work with many different languages and scripts to allow persons from various different cultures to use the system effectively in their native language.
Early operating systems were typically exclusively text-based and were only able to display characters from the Latin alphabet, i.e., the standard “a b c d . . . ” alphabet used to write the English and other Western European languages. These early systems were unable to display the complex characters and symbols from scripts and alphabets used to write languages such as Chinese, Japanese, Russian, Arabic, Korean, Hindi, Sanskrit, and various other languages that utilize non-Latin alphabets. In fact, many of the early text-based operating systems were unable to fully display those Western European languages that utilize special letters and accents (for example, the German umlaut character “ä”).
As GUI-based operating systems such as Microsoft® Windows became preferred over text-based system such as DOS, many realized that graphics-based operating systems made it possible to adapt to other more complex characters from non-Latin scripts and alphabets. However, even with the improved ability to display non-Latin alphabets, a problem surfaced. Developers from different countries failed to use standardized tools to create systems that provided multi-language support. Various national and regional standards had been developed for displaying characters. These standards included ASCII for American English, JIS for Japanese, GB Code for Chinese (PRC), Big-5 for Chinese (Taiwan), KS-Code for Korean, and ISCII for Indic languages (i.e. languages of India). Unfortunately, these standards were not compatible with one another and as a result, providing multiple language support in these new GUI-based operating systems was nearly impossible.
In order to rectify this problem, a coalition of engineers from large software companies convened in the late 1980's and proposed a standard known as Unicode. Unicode is a 16-bit code that allows for 2 to the 16th power (65,536) different characters to be defmed within the code. Unicode allowed characters/symbols in each language to be assigned a unique value such that when the computer system reads that value, it knows exactly which character/symbol to display on the screen.
Soon thereafter, Unicode became the accepted standard for rendering characters and symbols in computer operating systems, and it became possible for a user to type and display characters from many different languages within the same computer system. Once it was possible to display characters from the various world languages, development efforts began to focus on how best to provide users with an interface for entering characters and symbols from the various languages into the system.
One solution was the development of keyboard layouts. A keyboard layout is the collection of data for each keystroke and shift state combination within a keyboard software driver. A keyboard layout is distinguishable from the physical keyboard. The physical keyboard is comprised of the actual keys that a user strikes with his fingers to provide input to the computer. Most keyboards are physically the same, as shown in FIG. 2. Each key on the physical keyboard has a value assigned to it called a scan code. A key's scan code is sent to the computer each time that key is struck by the user. The shift state (i.e. whether the shift key is being held down) of the physical keyboard is sent as well. This code and the shift state must be interpreted by the software to determine what to display on the screen in response to typing that key. FIG. 3a shows a scan code mapping for a typical U.S. keyboard.
The keyboard layout is the software that is used to receive the hardware call (i.e. the scan code from the physical keyboard) and output text based on the scan code and shift state to the active application. Many languages have keyboard layouts that are unique to that language. Each keyboard layout is configured to call a specific Unicode value for each scan code/shift state combination. For example, striking the key with the scan code 0×10 in an unshifted state will cause the US English keyboard layout to display the ‘q’ character as can be seen in FIG. 3b. Striking that same key when using a keyboard layout configured for the Hindi language will result in the  character being displayed by the system.
In the Microsoft® Windows operating system environment, users may switch between input languages by using the language toolbar. Referring to FIG. 4, a language bar 400 is shown. The language bar 400 includes a language selection dropdown menu 402 which allows the user to switch between the various installed input languages—for example, English (United States) 404, French (France) 406, or Hindi 408. It may also include other columns that provide the user with other options to configure the input of different languages into the system.
Utilizing different keyboard layouts to input the different Unicode characters that represent various languages is useful when user knows the particular keyboard layout. However, in some cases, users are only familiar with keyboard layouts in a single language and do not know keyboard layouts for additional languages. Thus, there is a need for an input method allowing input of multiple languages while not requiring a user to learn a new keyboard layout.